1. Field of the Invention
This invention generally relates to the field of computer systems and spell-checking accessories and features for associated keyboards, and more specifically to a system and method for improving the quality of spelling suggestions by automatically detecting a keyboard layout and, for recognizing a keyboard mapping mismatch between a computer and a given remote user device based on a defined finite dictionary.
2. Background Art
One of the most important sources of keyboard mistyping is keyboard key proximity errors. Spellcheckers after detecting typographic mistakes, provide a number of suggestions to help the user correcting them. For keyboard proximity errors, which are the most common typing errors, suggested corrections depend on the keyboard layout. There are different computer keyboard layouts with the same character set available. For instance, standard “QWERTY” keyboard can be used for most Latin languages while national variants like French-specific layout are also available. Another example is English Dvorak keyboard layout that can be used instead of “QWERTY”.
The information related to keyboard layout is essential for spellcheckers to provide the users with the right spelling suggestions. For example, the user may type the word “alao” instead of “also”. Since “alao” is detected as a misspelled word, the spellchecker engine will assume that the user might have wanted to type the “s” key rather than the “a” since “a” and “s” keys are close to each other on the keyboard, and will suggest “also” as a correction. The following table illustrates possible key typing mistakes due to proximity for two different keyboard layout:
TABLE 1English KeyboardFrench KeyboardMistypedQWERTY possibleAZERTY possibleKeycorrect keyscorrect keysaqzwqsz
Most correction systems of typing mistakes use the English keyboard layout as default, which means that other likely suggestions are ignored, or irrelevant corrections are suggested if a different layout is used. At the same time it is not possible for applications to detect the layout information from the operating system as some operating systems do not provide that information at all. In case a spellchecker engine needs to know the keyboard layout information, it has to support extended Application Programming Interfaces (hereafter API) to request and obtain relevant information about the layout of the keyboard being used, which adds an extra complexity to the integration of text editing applications and linguistic engines. Existing text editing applications do not request actual keyboard layout information from the user, and therefore are unable to benefit from knowing the actual layout to improve the quality of their spelling suggestions. Furthermore, there are no known solutions to us for the automatic detection of keyboard layout. Therefore, there is a need for an automatic solution to be integrated with text editors, which automatically detects the layout of the keyboard and use this information to improve the quality of the spelling suggestions, with no need to integrate user interface or additional APIs.
Strings of alphabet or numeric characters entered using a specific keyboard layout will look different if they are assumed to be entered from another keyboard layout. As an illustration, the following table summarizes the differences between letters when entered from a French Keyboard when assumed to be entered from an English Keyboard.
TABLE 2EnglishFrenchKeyboardkeyboardqAwZaQzWm;
Therefore, a user typing some text, e.g. the Linux command ‘who’, when entered from the French Keyboard, will be ‘zho’ when assumed to be entered from an English Keyboard.
In case a remote user connecting to a server, using Virtual Network Computing (VNC) or Secure Shell (SSH), and the remote machine (or server) is running a specific platform (Linux, Windows operating systems . . . ) and is configured for a certain keyboard layout, if the remote user is using a different keyboard layout, a keyboard mismatch will occur. Thus, there exists a problem of how to dynamically detect the user keyboard layout to avoid this mismatch.
There are no known solutions to us for the automatic detection of keyboard layout, and current operating systems do not provide this information. Therefore, there is a need for an automatic solution that dynamically detects the layout of the keyboard when a remote user is connecting to a server, e.g., using VNC or other connection, and the server is configured for a certain keyboard layout that is different from the keyboard layout used by the remote user.
Basically Spellchecker engines accept and handle spelling requests from text editing applications. There are two types of requests available in most spell checking engines namely spell verification and spell aid. Spell verification requests contain input text words and spell checker replies whether or not the text words are misspelled. Spell aid request contains a misspelled word for which the spellchecker obtains and returns a number of spelling suggestions.
There are two main sources of spelling errors that most of spellcheckers are handling namely keyboard mistypings and phonetic errors. Keyboard mistypings are generally due to either keyboard proximity of keys or physical similarity of characters. Spellcheckers usually have spelling correction rules related to the above mentioned spelling errors in order to generate spelling suggestions. Correction rules present a model of possible errors people or text recognition software can make within a certain language. Keyboard proximity correction rules depends on the layout of the keyboard used. Subsets of correction rules for different keyboard layouts are used.